import requests
from bs4 import BeautifulSoup
import re
'''
信息组织与提取方法
'''
'''
Part1: 信息的标记
1.增加信息唯独
2.用于通信、存储与展示
3.结构与信息一样具有重要作用
4.更利于程序理解和应用
'''
'''
HTML的信息标记：WWW的信息组织形式
HTML通过<>标签组织形式
XML\JSON\YAML
'''
'''
三种信息标记形式的比较
XML格式: internet信息交互与传递
<person>
    <firstname>ZHENG</firstname>
    <address>HuangShan Road</address>
</person>

Json格式：移动应用云端与结点的处理，程序与接口连接，无注释。
YAML格式：各类系统的配置文件
{
    "firstname":"ZHENG",
    "lastname":"Windy",
    "address":{
                  "street":"Huangshan" ,
                   "city":"Hefei",
                   "zipcode":'230000'
                }
}
'''
'''
Part2: 信息提取的一般方法
方法一：解析信息的标记形式，再提取关键信息（需要标记解析器）
方法二：无视标记形式，直接搜索关键信息
方法三：融合方法,结合解析方法和搜索方法
'''
'''
实例：提取html的所有链接内容
'''
r = requests.get('http://python123.io/ws/demo.html')
demo = r.text #获取网站内容

soup = BeautifulSoup(demo, "html.parser")
for link in soup.find_all('a'):
    print(link.get('href'))

'''
name:对标签名字进行检索
attrs:对标签属性值的检索字符串

'''
# print(soup.find_all('a'))
# print(soup.find_all(['a','b']))
# for tag in soup.find_all(True):
#     print(tag.name)
#
# for tag in soup.find_all(re.compile('b')):
#     print(tag.name)
#
# for item in soup.find_all('p','course'):##查找p属性有course
#     print(item)
#     print(type(item))
#
# for item in soup.find_all(id='link1'):##查找属性link1
#     print(item)

print(type(soup.p.string))
print(soup.a.attrs)